/*  CenterDiv, version 1.0.1
 *  (c) 2007 Sven Hecht
 *
 *  CenterDiv is freely distributable under the terms of an MIT-style license.
 *  For details, see http://sven.hecht.googlepages.com/index.html
 *
/*--------------------------------------------------------------------------*/

var centerdiv = Class.create();
centerdiv.prototype = {
  
  initialize: function() {
  },

	//
	// getPageScroll()
	// Returns array with x,y page scroll values.
	// Core code from - quirksmode.org
	//
	getPageScroll: function (){

		var yScroll;

		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
		}

		arrayPageScroll = new Array('',yScroll) 
		return arrayPageScroll;
	},

	//
	// getPageSize()
	// Returns array with page width, height and window width, height
	// Core code from - quirksmode.org
	// Edit for Firefox by pHaez
	//
	getPageSize: function (){

		var xScroll, yScroll;

		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}

		var windowWidth, windowHeight;
		if (self.innerHeight) {	// all except Explorer
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	

		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}

		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}


		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
		return arrayPageSize;
	},
	
	center: function (_obj, xoffset, yoffset) {
	  _obj = $(_obj);
	  
		
		var arrayPageSize = this.getPageSize();
		var arrayPageScroll = this.getPageScroll();
		var objDim = Element.getDimensions(_obj);

		// center object if it exists
		if (_obj) {
			var xpos = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objDim.height) / 2);
			var ypos = (arrayPageSize[0] - 20 - objDim.width) / 2;
			
			if (xoffset) {
				xpos += xoffset;
			}
			if (yoffset) {
				ypos += yoffset;
			}
			
			_obj.style.top = xpos + 'px';
			_obj.style.left = ypos + 'px';
			_obj.style.display = 'block';
		}
	}
}